package cn.gxljc.technology.store_management.service.superadminservice.modules;

import cn.gxljc.technology.store_management.entity.Warehouse;
import cn.gxljc.technology.store_management.entity.WarehouseStock;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 功能：管理有关库存所有的信息
 * 作者：7214
 */
@Component
public interface StockManagement {
    /**
     * 库存模块
     * 1.根据仓库、增加库存
     * 2.根据仓库、删除库存
     * 3.根据仓库、查找所有库存
     * 4.根据仓库、查找特定的库存
     * 5.根据仓库、查看特定的仓库是否存在(通过已有的接口可实现)
     * 6.根据仓库和所对应的库存修改基本信息
     */

    /**
     * 功能：根据仓库、增加库存
     * 输入参数：goodsName（商品名称），repositoryID（仓库ID）
     * 输出参数：result（0增加成功，-1执行失败，-2此库存已存在）
     */
    Integer insertStockIntoRepository(String goodsName, Integer repositoryID);


    /**
     * 功能：根据仓库、删除库存
     * 输入参数：goodsName（商品名称），repositoryID（仓库ID）
     * 输出参数：result（0删除成功，-1执行失败，-2此库存不存在）
     */
    Integer deleteStockFromRepository(String goodsName, Integer repositoryID);


    /**
     * 功能：根据仓库、查找所有库存
     * 输入参数：repositoryID（仓库ID）
     * 输出参数：result（0查询成功，-1执行失败，-2所有的库存不存在），allStocks（非空——查找成功，null——查找失败）
     */
    List<WarehouseStock> findAllStockFromRepository(Integer repositoryID);


    /**
     * 功能：根据仓库、查找特定的库存
     * 输入参数：goodsName（商品名称），repositoryID（仓库ID）
     * 输出参数：result（0查询成功，-1执行失败，-2库存不存在），stock（非空——查找成功，null——查找不存在）
     */
    WarehouseStock findStockFromRepositoryByGoodsName(String goodsName, Integer repositoryID);


    /**
     * 功能：根据仓库、查找特定的库存
     * 输入参数：goodsName（商品名称），repositoryID（仓库ID）
     * 输出参数：result（0查询成功，-1执行失败，-2库存不存在），stock（非空——查找成功，null——查找不存在）
     */
    Integer changeStockInfoFromRepository(Warehouse goods, Integer repositoryID);

}
